#pragma once

#include <YSimpleNetwork/YSimpleNetwork.h>

namespace ysimple_system
{
	struct IProactor;
}

namespace ysimple_network
{

	struct INetworkFactory
	{
		virtual TCP_SESSION_SPTR		createProactiveClientTCPSession(ysimple_system::IProactor& proactor) = 0;
		virtual TCP_SESSION_SPTR		createProactiveServerTCPSession(ysimple_system::IProactor& proactor) = 0;
		virtual UDP_SESSION_SPTR		createProactiveUDPSession(ysimple_system::IProactor& proactor) = 0;
		virtual PACKET_SPTR		createPacket(size_t len) = 0;
	};

}